﻿''' <summary>
''' Ein Meteor! Praktisch machen wir ihn platt und das Plasma auch!
''' </summary>
''' <remarks></remarks>
Public Class LandschaftsTexturMeteor
    Inherits ObjektLandschaftsTextur
    Public Sub New()
        ID = "METEOR"
        Landschaftsname = "Meteor"
        Deckung = -1
        Tarnung = False
        Select Case DataSettings.CommanderWarsGameModus
            Case Is <= CommanderWarsGameModi.AdvanceWarsDS
                KP = 99
            Case CommanderWarsGameModi.AdvanceWarsDC
                KP = 99
            Case Else
                KP = 100
        End Select
        Ausrichtungslandschaften = New String() {"PLASMA"}
        Gross = True
        Frame = True
        If DataSettings.draw3D Then
            Ini3D()
        End If
        TexturenLaden(New String() {"Meteor", "Meteor+S+W", "Meteor+O+W", "Meteor+O+S", "Meteor+O+S+W", "Meteor+W", "Meteor+O", "Meteor+S"})
        Normal = 0

        WirdZu = "EBENE"
    End Sub
    Public Overrides Function BildID(ByVal X As Integer, ByVal Y As Integer, ByVal Spielfeld As ObjektSpielfeld, Optional ByVal Untergund As Boolean = False) As Integer
        Dim Ausrichtungen As String = getAusrichtung(X, Y, Spielfeld)
        If Ausrichtungen.StartsWith("+") Then
            Ausrichtungen = Ausrichtungen.Remove(0, 1)
        End If
        If Ausrichtungen.StartsWith("N+") Then
            Ausrichtungen = Ausrichtungen.Remove(0, 2)
        End If
        Dim Stelle As Integer = FindElement(Ausrichtung, Ausrichtungen, True)
        If Stelle < 0 Then
            Return 0
        Else
            Return Stelle
        End If
    End Function
    Public Overrides Function DrawSpecialStyle(ByVal BildID As Integer, ByVal Fog As Nebelarten, ByVal Alpha As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal TerrainUntergrundID As Integer, ByVal TerrainUntergrundBildID As Integer, ByVal TerrainUntergrundID2 As Integer, ByVal TerrainUntergrundBildID2 As Integer, Optional ByVal FixedLocation As Boolean = False, Optional ByVal Top As Boolean = False) As Boolean
        Return DrawTerrainUndUntergrund(Alpha, Fog, BildID, X, Y, LandschaftsTexturPlasma.Frames_2, 3, TerrainUntergrundID, TerrainUntergrundBildID, TerrainUntergrundID2, TerrainUntergrundBildID2, FixedLocation, Top)
    End Function

    Public Overrides Sub Ini3D()

    End Sub

    Public Overloads Overrides Sub Malen3D(ByVal p_MatCube As Microsoft.DirectX.Matrix, ByVal Landschaft As ObjektLandschaft)

    End Sub

    Public Overrides Sub Tick()

    End Sub
    ''' <summary>
    ''' Das Feld es werden alle angrenzenden Felder ueberprueft!
    ''' </summary>
    ''' <param name="X1"></param>
    ''' <param name="Y1"></param>
    ''' <remarks></remarks>
    Public Shared Sub DestroyPlasma(ByVal X1 As Integer, ByVal Y1 As Integer)
        Dim S As Integer = Objektverwalter.Spielfeld.MomentaneSchlacht
        Dim L As ObjektLandschaft = Wegsuchsystem.getFeldRundrum(X1, Y1, S, 1, 1, Nothing, Objektverwalter.Spielfeld)
        While L IsNot Nothing
            If L.LandschaftsID = "PLASMA" Then
                Dim LWSS As New Landschaftssuchsystem(L.KooX, L.KooY, L.LandschaftsID, S)
                For X = 0 To Objektverwalter.Spielfeld.Breite - 1
                    For Y = 0 To Objektverwalter.Spielfeld.Hoehe - 1
                        If LWSS.GetDauer(X, Y) >= 0 Then
                            Objektverwalter.Spielfeld.Landschaften(X, Y, S) = New ObjektLandschaft(Objektverwalter.LandschaftenBilder(Objektverwalter.Spielfeld.Landschaften(X, Y, S).TerrainUntergrundID).ID, X, Y, Objektverwalter.Spielfeld, Nothing)
                            Dim L1 As ObjektLandschaft = Wegsuchsystem.getFeldRundrum(X, Y, S, 1, 1, Nothing, Objektverwalter.Spielfeld)
                            While L1 IsNot Nothing
                                If L1.LandschaftsID = "METEOR" Then
                                    L1.UebergaengeAktualisieren(L1.KooX, L1.KooY, Objektverwalter.Spielfeld)
                                End If
                                L1 = Wegsuchsystem.getFeldRundrum(X, Y, S, 1, 1, L1, Objektverwalter.Spielfeld)
                            End While
                        End If
                    Next
                Next
            End If
            L = Wegsuchsystem.getFeldRundrum(X1, Y1, S, 1, 1, L, Objektverwalter.Spielfeld)
        End While
    End Sub

    Public Overrides Function GetTerrainUntergrund() As String()
        Return New String() {"EBENE", "WUESTE", "SCHNEE", "OEDLAND"}
    End Function
End Class
''' <summary>
''' Ein Meteor! Praktisch machen wir ihn platt und das Plasma auch!
''' </summary>
''' <remarks></remarks>
Public Class LandschaftsTexturW_Meteor
    Inherits ObjektLandschaftsTextur
    Public Sub New()
        ID = "W_METEOR"
        Landschaftsname = "Meteor"
        Deckung = -1
        Tarnung = False
        Select Case DataSettings.CommanderWarsGameModus
            Case Is <= CommanderWarsGameModi.AdvanceWarsDS
                KP = 99
            Case CommanderWarsGameModi.AdvanceWarsDC
                KP = 99
            Case Else
                KP = 100
        End Select
        Ausrichtungslandschaften = New String() {"W_PLASMA"}
        Gross = True
        Frame = True
        If DataSettings.draw3D Then
            Ini3D()
        End If
        TexturenLaden(New String() {"W_Meteor", "W_Meteor+S+W", "W_Meteor+O+W", "W_Meteor+O+S", "W_Meteor+O+S+W", "W_Meteor+W", "W_Meteor+O", "W_Meteor+S"})
        Normal = 0

        WirdZu = "EBENE"
    End Sub
    Public Overrides Function BildID(ByVal X As Integer, ByVal Y As Integer, ByVal Spielfeld As ObjektSpielfeld, Optional ByVal Untergund As Boolean = False) As Integer
        Dim Ausrichtungen As String = getAusrichtung(X, Y, Spielfeld)
        If Ausrichtungen.StartsWith("+") Then
            Ausrichtungen = Ausrichtungen.Remove(0, 1)
        End If
        If Ausrichtungen.StartsWith("N+") Then
            Ausrichtungen = Ausrichtungen.Remove(0, 2)
        End If
        Dim Stelle As Integer = FindElement(Ausrichtung, Ausrichtungen, True)
        If Stelle < 0 Then
            Return 0
        Else
            Return Stelle
        End If
    End Function
    Public Overrides Function DrawSpecialStyle(ByVal BildID As Integer, ByVal Fog As Nebelarten, ByVal Alpha As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal TerrainUntergrundID As Integer, ByVal TerrainUntergrundBildID As Integer, ByVal TerrainUntergrundID2 As Integer, ByVal TerrainUntergrundBildID2 As Integer, Optional ByVal FixedLocation As Boolean = False, Optional ByVal Top As Boolean = False) As Boolean
        Return DrawTerrainUndUntergrund(Alpha, Fog, BildID, X, Y, LandschaftsTexturPlasma.Frames_2, 3, TerrainUntergrundID, TerrainUntergrundBildID, TerrainUntergrundID2, TerrainUntergrundBildID2, FixedLocation, Top)
    End Function

    Public Overrides Sub Ini3D()

    End Sub

    Public Overloads Overrides Sub Malen3D(ByVal p_MatCube As Microsoft.DirectX.Matrix, ByVal Landschaft As ObjektLandschaft)

    End Sub

    Public Overrides Sub Tick()

    End Sub
    ''' <summary>
    ''' Das Feld es werden alle angrenzenden Felder ueberprueft!
    ''' </summary>
    ''' <param name="X1"></param>
    ''' <param name="Y1"></param>
    ''' <remarks></remarks>
    Public Shared Sub DestroyPlasma(ByVal X1 As Integer, ByVal Y1 As Integer)
        Dim S As Integer = Objektverwalter.Spielfeld.MomentaneSchlacht
        Dim L As ObjektLandschaft = Wegsuchsystem.getFeldRundrum(X1, Y1, S, 1, 1, Nothing, Objektverwalter.Spielfeld)
        While L IsNot Nothing
            If L.LandschaftsID = "W_PLASMA" Then
                Dim LWSS As New Landschaftssuchsystem(L.KooX, L.KooY, L.LandschaftsID, S)
                For X = 0 To Objektverwalter.Spielfeld.Breite - 1
                    For Y = 0 To Objektverwalter.Spielfeld.Hoehe - 1
                        If LWSS.GetDauer(X, Y) >= 0 Then
                            Objektverwalter.Spielfeld.Landschaften(X, Y, S) = New ObjektLandschaft(Objektverwalter.LandschaftenBilder(Objektverwalter.Spielfeld.Landschaften(X, Y, S).TerrainUntergrundID).ID, X, Y, Objektverwalter.Spielfeld, Nothing)
                            Dim L1 As ObjektLandschaft = Wegsuchsystem.getFeldRundrum(X, Y, S, 1, 1, Nothing, Objektverwalter.Spielfeld)
                            While L1 IsNot Nothing
                                If L1.LandschaftsID = "W_METEOR" Then
                                    L1.UebergaengeAktualisieren(L1.KooX, L1.KooY, Objektverwalter.Spielfeld)
                                End If
                                L1 = Wegsuchsystem.getFeldRundrum(X, Y, S, 1, 1, L1, Objektverwalter.Spielfeld)
                            End While
                        End If
                    Next
                Next
            End If
            L = Wegsuchsystem.getFeldRundrum(X1, Y1, S, 1, 1, L, Objektverwalter.Spielfeld)
        End While
    End Sub

    Public Overrides Function GetTerrainUntergrund() As String()
        Return New String() {"WUESTE", "EBENE", "SCHNEE", "OEDLAND"}
    End Function
End Class
''' <summary>
''' Ein Meteor! Praktisch machen wir ihn platt und das Plasma auch!
''' </summary>
''' <remarks></remarks>
Public Class LandschaftsTexturS_Meteor
    Inherits ObjektLandschaftsTextur
    Public Sub New()
        ID = "S_METEOR"
        Landschaftsname = "Meteor"
        Deckung = -1
        Tarnung = False
        Select Case DataSettings.CommanderWarsGameModus
            Case Is <= CommanderWarsGameModi.AdvanceWarsDS
                KP = 99
            Case CommanderWarsGameModi.AdvanceWarsDC
                KP = 99
            Case Else
                KP = 100
        End Select
        Ausrichtungslandschaften = New String() {"S_PLASMA"}
        Gross = True
        Frame = True
        If DataSettings.draw3D Then
            Ini3D()
        End If
        TexturenLaden(New String() {"S_Meteor", "S_Meteor+S+W", "S_Meteor+O+W", "S_Meteor+O+S", "S_Meteor+O+S+W", "S_Meteor+W", "S_Meteor+O", "S_Meteor+S"})
        Normal = 0

        WirdZu = "EBENE"
    End Sub
    Public Overrides Function BildID(ByVal X As Integer, ByVal Y As Integer, ByVal Spielfeld As ObjektSpielfeld, Optional ByVal Untergund As Boolean = False) As Integer
        Dim Ausrichtungen As String = getAusrichtung(X, Y, Spielfeld)
        If Ausrichtungen.StartsWith("+") Then
            Ausrichtungen = Ausrichtungen.Remove(0, 1)
        End If
        If Ausrichtungen.StartsWith("N+") Then
            Ausrichtungen = Ausrichtungen.Remove(0, 2)
        End If
        Dim Stelle As Integer = FindElement(Ausrichtung, Ausrichtungen, True)
        If Stelle < 0 Then
            Return 0
        Else
            Return Stelle
        End If
    End Function
    Public Overrides Function DrawSpecialStyle(ByVal BildID As Integer, ByVal Fog As Nebelarten, ByVal Alpha As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal TerrainUntergrundID As Integer, ByVal TerrainUntergrundBildID As Integer, ByVal TerrainUntergrundID2 As Integer, ByVal TerrainUntergrundBildID2 As Integer, Optional ByVal FixedLocation As Boolean = False, Optional ByVal Top As Boolean = False) As Boolean
        Return DrawTerrainUndUntergrund(Alpha, Fog, BildID, X, Y, LandschaftsTexturPlasma.Frames_2, 3, TerrainUntergrundID, TerrainUntergrundBildID, TerrainUntergrundID2, TerrainUntergrundBildID2, FixedLocation, Top)
    End Function

    Public Overrides Sub Ini3D()

    End Sub

    Public Overloads Overrides Sub Malen3D(ByVal p_MatCube As Microsoft.DirectX.Matrix, ByVal Landschaft As ObjektLandschaft)

    End Sub

    Public Overrides Sub Tick()

    End Sub
    ''' <summary>
    ''' Das Feld es werden alle angrenzenden Felder ueberprueft!
    ''' </summary>
    ''' <param name="X1"></param>
    ''' <param name="Y1"></param>
    ''' <remarks></remarks>
    Public Shared Sub DestroyPlasma(ByVal X1 As Integer, ByVal Y1 As Integer)
        Dim S As Integer = Objektverwalter.Spielfeld.MomentaneSchlacht
        Dim L As ObjektLandschaft = Wegsuchsystem.getFeldRundrum(X1, Y1, S, 1, 1, Nothing, Objektverwalter.Spielfeld)
        While L IsNot Nothing
            If L.LandschaftsID = "S_PLASMA" Then
                Dim LWSS As New Landschaftssuchsystem(L.KooX, L.KooY, L.LandschaftsID, S)
                For X = 0 To Objektverwalter.Spielfeld.Breite - 1
                    For Y = 0 To Objektverwalter.Spielfeld.Hoehe - 1
                        If LWSS.GetDauer(X, Y) >= 0 Then
                            Objektverwalter.Spielfeld.Landschaften(X, Y, S) = New ObjektLandschaft(Objektverwalter.LandschaftenBilder(Objektverwalter.Spielfeld.Landschaften(X, Y, S).TerrainUntergrundID).ID, X, Y, Objektverwalter.Spielfeld, Nothing)
                            Dim L1 As ObjektLandschaft = Wegsuchsystem.getFeldRundrum(X, Y, S, 1, 1, Nothing, Objektverwalter.Spielfeld)
                            While L1 IsNot Nothing
                                If L1.LandschaftsID = "S_METEOR" Then
                                    L1.UebergaengeAktualisieren(L1.KooX, L1.KooY, Objektverwalter.Spielfeld)
                                End If
                                L1 = Wegsuchsystem.getFeldRundrum(X, Y, S, 1, 1, L1, Objektverwalter.Spielfeld)
                            End While
                        End If
                    Next
                Next
            End If
            L = Wegsuchsystem.getFeldRundrum(X1, Y1, S, 1, 1, L, Objektverwalter.Spielfeld)
        End While
    End Sub

    Public Overrides Function GetTerrainUntergrund() As String()
        Return New String() {"SCHNEE", "EBENE", "WUESTE", "OEDLAND"}
    End Function
End Class